#pragma once

#include <cstdio>
#include <map>
#include <string>
#include <sstream>

#include "entry_base.h"
#include "entry_int.h"
#include "entry_double.h"
#include "entry_size_t.h"
#include "entry_switch.h"

class coefficients {
public:
	coefficients(const char* setting_file_name);
	std::string to_string();
	//--
	int test_times;
	double time_limit;

	bool II;
	bool SA;
	bool TS;

	int II_neighbor_per_time;
	int II_retry_limit;
	
	double SA_start_tempture;
	double SA_init_cool_rate;
	double SA_final_temperature;
	int SA_iterate_length;

	int TS_neighbor_per_time;
	int TS_retry_limit;
	size_t TS_tubu_list_len;
private:
	std::map<std::string , entry_base*> input_table_;
};